1   /*
2    * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.
8    *
9    * This code is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12   * version 2 for more details (a copy is included in the LICENSE file that
13   * accompanied this code).
14   *
15   * You should have received a copy of the GNU General Public License version
16   * 2 along with this work; if not, write to the Free Software Foundation,
17   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18   *
19   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20   * or visit www.oracle.com if you need additional information or have any
21   * questions.
22   */
23  
24  /*
25   * @test
26   * @bug 6632810
27   * @summary javax.swing.plaf.basic.BasicScrollPaneUI.getBaseline(JComponent, int, int) doesn't throw NPE and IAE
28   * @author Pavel Porvatov
29   */
30  
31  import javax.swing.*;
32  import javax.swing.plaf.basic.BasicScrollPaneUI;
33  
34  public class Test6632810 {
35      public static void main(String[] args) {
36          SwingUtilities.invokeLater(new Runnable() {
37              public void run() {
38                  BasicScrollPaneUI ui = new BasicScrollPaneUI();
39  
40                  ui.installUI(new JScrollPane());
41  
42                  try {
43                      ui.getBaseline(null, 1, 1);
44  
45                      throw new RuntimeException("getBaseline(null, 1, 1) does not throw NPE");
46                  } catch (NullPointerException e) {
47                      // Ok
48                  }
49  
50                  int[][] illegelParams = new int[][]{
51                          {-1, 1,},
52                          {1, -1,},
53                          {-1, -1,},
54                  };
55  
56                  for (int[] illegelParam : illegelParams) {
57                      try {
58                          int width = illegelParam[0];
59                          int height = illegelParam[1];
60  
61                          ui.getBaseline(new JScrollPane(), width, height);
62  
63                          throw new RuntimeException("getBaseline(new JScrollPane(), " + width + ", " + height +
64                                  ") does not throw IAE");
65                      } catch (IllegalArgumentException e) {
66                          // Ok
67                      }
68                  }
69              }
70          });
71      }
72  }